﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ApplicationGenerator.BusinessModule.Interfaces
{
    /// <summary>
    /// Interfejs dla fasady dla modeli
    /// </summary>
    public interface IModelFacade
    {
        /// <summary>
        /// Tworzy instancję modelu
        /// </summary>
        /// <param name="name">Nazwa modelu</param>
        /// <returns>Utworzona instancja modelu</returns>
        IModel CreateModel(string name);

        /// <summary>
        /// Pobiera instancję modelu 
        /// </summary>
        /// <param name="name">Nazwa modelu</param>
        /// <param name="id">Id instancji modelu</param>
        /// <returns>Pobrana instancja modelu</returns>
        IModel LoadModel(string name, int id);

        /// <summary>
        /// Zapisuje instancję modelu
        /// </summary>
        /// <param name="model">Instancja modelu</param>
        void SaveModel(IModel model);

        /// <summary>
        /// Usuwa instancję modelu
        /// </summary>
        /// <param name="model">Instancja modelu</param>
        void DeleteModel(IModel model);

        /// <summary>
        /// Waliduje instancję modelu
        /// </summary>
        /// <param name="model">Instancja modelu</param>
        /// <returns>Czy model jest poprawny ?</returns>
        bool ValidateModel(IModel model);
    }
}
